package com.foodapp.back.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.foodapp.back.dto.DishDTO;
import com.foodapp.back.entity.Dish;
import com.foodapp.back.vo.DishVO;

import java.util.List;

/**
 * 菜品服务接口
 */
public interface DishService extends IService<Dish> {

    /**
     * 分页查询菜品列表
     *
     * @param page         页码
     * @param size         每页大小
     * @param restaurantId 餐厅ID
     * @param category     分类
     * @param keyword      关键字
     * @return 菜品列表
     */
    Page<DishVO> pageList(Integer page, Integer size, Long restaurantId, String category, String keyword);

    /**
     * 获取餐厅菜单
     *
     * @param restaurantId 餐厅ID
     * @return 菜单列表
     */
    List<DishVO> getMenuByRestaurantId(Long restaurantId);

    /**
     * 获取菜品详情
     *
     * @param id 菜品ID
     * @return 菜品详情
     */
    DishVO getDishById(Long id);

    /**
     * 新增菜品
     *
     * @param dishDTO 菜品信息
     * @return 是否成功
     */
    boolean addDish(DishDTO dishDTO);

    /**
     * 更新菜品
     *
     * @param dishDTO 菜品信息
     * @return 是否成功
     */
    boolean updateDish(DishDTO dishDTO);

    /**
     * 删除菜品
     *
     * @param id 菜品ID
     * @return 是否成功
     */
    boolean deleteDish(Long id);

    /**
     * 更新菜品状态
     *
     * @param id     菜品ID
     * @param status 状态
     * @return 是否成功
     */
    boolean updateStatus(Long id, Integer status);
}
